package com.proxy.demo06;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * 动态代理不用我们创建代理类对象，改由Proxy#newProxyInstance()来创建，返回一个指定接口（我们的业务接口People）的代理类实例。
 *
 *
 */
public class Client {
    public static void main(String[] args) {
        //要代理的真实对象
        TeacherService service = new TeacherServiceImpl();

        //代理对象的调用处理程序，最终代理对象的调用处理程序会调用真实对象的方法
        InvocationHandler handler = new TeacherServiceInvocationHandler(service);

        // 生成代理类实例
        TeacherService proxy = (TeacherService)Proxy.newProxyInstance(handler.getClass().getClassLoader(),
                service.getClass().getInterfaces(), handler);

//        System.out.println(proxy);

        proxy.work();// 调用代理方法

    }
}
